package com.iwuyc.tools.commons.codec;

/**
 * 通用编解码器
 *
 * @param <T> 编解码对象
 */
public interface Codec<T> {

    /**
     * 解码
     *
     * @param data 待解码的数据
     * @return 解码后的数据
     */
    T decode(byte[] data);

    /**
     * 编码
     *
     * @param data 待编码的数据
     * @return 编码后的数据
     */
    byte[] encode(T data);

    /**
     * 支持的编码类型
     * @return 编码类型列表
     */
    TypeEnum[] supportedTypes();
}
